public class code2 {
    public void duplicateZeros(int[] arr) {
        //思路：开始先想着从异地创建，再思考为就地创建
        //就地创建从前往后遍历行不通，采取从后往前遍历

        //1.先找到最后一个复写的数(双指针找)

        //2.从后往前完成复写操作

        int n = arr.length,i=0,j=0;
        while(j<n) {
            if(arr[i]==0) j++;
            i++;
            j++;
        }
        i--;j--;//最后j和i又走了一步

        while(i>=0) {
            if(j<n) arr[j]=arr[i];//?为何j<n
            if(arr[i]==0&&--j>=0) arr[j]=0;
            i--;j--;
        }
    }
}
